home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 45 / Amiga Format CD45 (1999-09)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-11].iso / +system+ / tools / wb / muibase / todo < prev    next >
Text File  |  1999-08-20  |  7KB  |  171 lines

  1. Here are some ideas I collected from some emails by my alpha/beta testers.
  2. The testers names are:
  3.  
  4.         magr2112@hem2.passagen.se (Mats Granstrom)
  5.         raresoft@rz.fh-augsburg.de (Ralph Reuchlein)
  6.         shining@braunschweig.netsurf.de (Thomas Fricke)
  7.         andre@melior.s.bawue.de (André Schenk)
  8.         klaus@melior.s.bawue.de (Klaus Gessner)
  9.         00060099@southnet.de (Markus Göttler)
  10.         oliver.roberts@iname.com (Oliver Roberts)
  11.  
  12.         and of course me: gutmann@informatik.uni-freiburg.de (Steffen Gutmann)
  13.  
  14. * Programming function for deleting all records of a table.
  15.  
  16. * (LASTPOS substr string) which returns the position of the string
  17.   where the last substr appears in it.
  18.  
  19. * (COPIES string number) for returning a string of 'number' times
  20.   the contents of 'string'.
  21.  
  22. * new flag in the New/Change attribute requester that disables
  23.   changing the project's number-of-changes value.
  24.  
  25. * Display record trigger function
  26.  
  27. * Larger max number of characters for string attributes.
  28.  
  29. * Direct expressions for virtual attributes instead of function entries.
  30.  
  31. * (EVAL <str-expr>) for programming MUIbase.
  32.  
  33. * Image kind for virtual attributes.
  34.  
  35. * Memo kind for virtual attributes.
  36.  
  37. * Jump-to-key feature for virtual attributes of list kind.
  38.  
  39. * Improve display listview by adding arrows to each entry like ListTree does.
  40.  
  41. * Use keypad keys for special purposes.
  42.  
  43. * Progress indicator when ordering records.
  44.  
  45. * Load window button images at program start.
  46.  
  47. * Some kind of load/save of filters. Maybe in a "MUI-pulldown-menu".
  48.  
  49. * Prevent users from changing the structure of a database.
  50. [Planned are Password protection for project and structure].
  51.  
  52. * Select-from-where query optimization
  53.  
  54. The select-from-where query is currently not optimized. E.g. imagine the
  55. following situation: a relation called Person has about 1000 records and
  56. you want to run the following query:
  57.  
  58. SELECT a.Name, b.Name FROM Person a, Person b
  59. WHERE (AND (= a.Name "Steffen") (= b.Name "Mats"))
  60.  
  61. Don't try to find any sense in this query :-)
  62.  
  63. Now the query command builds the cross product of 1000 x 1000 records
  64. = 1 000 000 tuples to examine! This will take many hours.
  65. But if you examine the WHERE expression you see that
  66. (= a.Name "Steffen") only depends on records from Person a and
  67. (= b.Name "Mats") only depend on records from Person b, so
  68. you could first check the expression (= a.Name "Steffen")
  69. for all records of Person a and (= b.Name "Mats") for
  70. all records of Person b and then build the cross product.
  71. This way you only need to check 1000 + 1000 = 2000 tuples.
  72. Thus the running time has been improved from n² to 2n
  73. where n is the number of records of relation Person.
  74. I already have an idea how to optimize the select-from-where query
  75. for arbitrary WHERE expressions that consists of AND, OR and NOT expressions.
  76.  
  77. * Allow Ordering on reference attributes.
  78.  
  79. * Apply changes made to choice labels to all existing records.
  80.  
  81. * Mask/Display editor with Drag 'n Drop.
  82.  
  83. * New data type: Selection for selecting n items out of m items.
  84.  
  85. * Context menu item "Search for" for editor fields.
  86.  
  87. * Optional log file where all changes are written in ASCII to.
  88.  
  89. * Copy & Paste of several attributes.
  90.  
  91. * Hotlist for program output and query print requester.
  92.  
  93. * Indices.
  94.  
  95. * More features for preprocessor (Macros, conditional compilation)
  96.  
  97.  
  98. --- Ideas & suggestions which will have to wait ---
  99.  
  100. * Foreground colors for text objects.
  101.  
  102. Problem: MUI's current approach for setting the foreground color
  103. in Text objects is limited to only 8 pen numbers, and these pen
  104. numbers may refer to only a subset of 8 colors, e.g. on my system
  105. they refer to only 4 real colors.
  106.  
  107. * Special functions support
  108.   I  know that you would not build in special functions e.g. for
  109.   mathematical  functions  like arsinh() and so on. But for some
  110.   special databases this would be nice. Is there any possibility
  111.   to implement an interface for self written function libraries?
  112.   AREXX demonstrates this ability: with addlib() you can load in
  113.   an  AREXX  library  and  you  can  use  its  functions  like a
  114.   implemented function. What do you think about that?
  115.  
  116. I don't know how to implement this for now.  Maybe a C interface and
  117. a linkable object module would solve it.  However I would really prefer
  118. the ARexx solution (of course an improved one compared to AmigaBase).
  119. I am thinking about an (RX pattern ...) function that returns a string
  120. containing the result of the ARexx command.
  121.  
  122. An idea that could work is to use a shared library with a well
  123. defined interface.  The user provides the library, registers it
  124. by calling a MUIbase function, MUIbase calls an init function to
  125. know about all available functions of the library, and then the user
  126. can call functions from the library.
  127.  
  128. * How  about  this: Add a menu point to the context specific textfield
  129.   menu  which  pops  up a window with two lists of relations and their
  130.   attributes.  The  left list contains the relations and the right one
  131.   the  depending  attributes like the relations and attribute lists in
  132.   the  structure  editor. Selecting one attribute will insert the full
  133.   relation  path  into  the  textfield.  At  the  moment I must have a
  134.   photographic mind to remember the relations with their attributes.
  135.  
  136. I don't know how I can implement this with MUI 3.8. The editor menu
  137. is a context menu and in 3.8 context menus are limited to only
  138. one toplevel menu. I don't want to put all relation names in the
  139. toplevel menu. I could add a menu item "Insert attribute/relation name"
  140. to the toplevel menu and pop up a window with all relations and attributes.
  141. But this solution is not user friendly because context menus can't have
  142. shortcuts and you would have to use the mouse the whole time.
  143. I will wait how MUI will handle context menus in the future.
  144.  
  145. * Context menu for relations?
  146.  
  147. I will wait how context menus are implemented in MUI > 3.8.
  148.  
  149. * Use ListTree for the display list.
  150.  
  151. Currently ListTree does not support multi-selection. So adding
  152. a group object to the display list by multi-selecting some objects
  153. for being the childs of the new group and pressing the "Group"
  154. button will not be possible. I will wait until ListTree supports
  155. multi-selection.
  156.  
  157. --- Ideas I am not going to implement:
  158.  
  159. * Autosave
  160.  
  161. Reasons:
  162.  
  163.     o Saving from time to time is a very simple task.
  164.     o You can't remember the last time your computer autosaved your projects.
  165.     o The computer may save in an inconsistent state, e.g. imagine
  166.       you manage two bank accounts and would like to transfer
  167.       money from one account to the other.  If the autosave feature
  168.       saves your project after you made the transaction for one account
  169.       but not for the other one then you have saved an inconsistent
  170.       database project.
  171.